Top 10k strings from ROM Routinen (1987)(Klaus Jahn)(de).tzx in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [TZX] (TOSEC-v2007-01-01) /

Back to the directory listing

   2 a$="Alles klar ! Seite "+s$+" erscheint sofort.":
   2 Bitte Cassettenrekorder ab-     stellen !                       
   2 =copy        
   2  = zurueck  
   2  = vor     
   2  = Seite anwaehlen     
   1 x8DDD8|($$
   1 und auf 'v' druecken !       
   1 r$=r$+"\"+
   1 j$="X , Y        ":
   1 h$="X , Y , Z    ":
   1 g$="Opcode Operation Stack vorher / nachher"
   1 c$=" auf Calculatorstack legen"
   1 bQIIF"AII6
   1 b4        _
   1 b3        
   1 b2        ^
   1 b1        I
   1 a$="Welche Seite moechten Sie sehen [1..24] ?\"+
   1 a$="Welche Seite moechten Sie sehen [1..17] ?\"+
   1 ROM Teil 2
   1 ROM Teil 1
   1 Cassettenrekorder einschalten
   1 @@@@@H~IIB TT8@
   1 6III6&III>
   1 +"nuetzlichen ROM-Routinen und des\"+
   1 +"Zum Stoppen eine Taste druecken...":
   1 +"Calculators rst 40."
   1 +" call 6037~~hl = hl * de:\"+
   1 +" call 5829"
   1 +" call 5808~~Berechnen einer Bildschirm-Pixel-Adresse~nach hl. Angegeben wird die (X,Y)-~Pixelposition:~~a) ld c,{X-Koordinate}~b) ld b,{Y-Koordinate}~c) call 8874~d) hl gibt die SCREEN$-Adresse an."
   1 +" call 4656"
   1 +" call 4185~~BASIC-Zeilenkursor runter:\"+
   1 +" call 4083"
   1 +" call 3884~~Ausgabe eines Listings:\"+
   1 +" call 12457"
   1 +" call 12171~~Scrollen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3584"
   1 +" call 11747"
   1 +" call 11733"
   1 +" call 11682"
   1 +" call 11563"
   1 +" call 11560"
   1 +" call 11547~Akku auf Buchstabencode pruefen:call 11405~Akku auf alphanumerisch pruefen:call 11400"
   1 )+"~  3","0507","-","0517",h$+"X ,(Y - Z)~  4","0607","*","0617",h$+"X ,(Y * Z)~  5","0707","/","0717",h$+"X ,(Y / Z)"
   1 )+") ausgedruckt, da die~beiden Opcodes zum verdoppeln ueber-~sprungen worden sind."
   1 (DD88DDD 8DD(
   1 'EEE9>III2
   1 "8","0600"," 
   1 "8","0100","Opcode: Ausfuehrung:~~ 51","0308","unbedingter Sprung~  0","0408","Sprung nur dann, wenn das","0508","oberste Calculatorelement","0608","ungleich null ist."
   1 "7","0100","BASIC-Programm loeschen:\"+
   1 "6","0710","
   1 "6","0122","SIN(x/80*PI) , 23g) rst 40~   Byt. #4    *","0322","23*SIN(x/80*PI)~   Byt. #164  10","0422","23*SIN(x/80*PI) , 10   Byt. #15   +","0522","10+23*SIN(x/80*PI)~   Byt. #56   End.~h) ret~i) das Ergebnis liegt dann auf dem~Calculatorstack !"
   1 "6","0100",o$,"0100",v$+v$+v$+v$+v$,"0600",o$
   1 "5","0100","a) rst 40       Calculatoraufruf~b) Byt. #163    PI/2 auf Calculatorstack~c) Byt. #51     Sprung~   Byt. #3      3 Bytes sollen ueber-","0516","sprungen werden"
   1 "4","1005","
   1 "37","0100",g$+"~~  1","0307","tauschen","0317",h$+"X , Z , Y~  2","0407","loeschen","0417",h$+h$(
   1 "35","0100",g$+"~~ 41","0307","SGN"+r$,"0317",h$+"X,Y,(SGN Z)  42","0407","ABS","0417",h$+"X,Y,(ABS Z)  43","0507","PEEK","0517",h$+"X,Y,(PEEK Z) 44","0607","IN","0617",h$+"X,Y,(IN Z)~ 49","0707","dupliz.","0717",h$+"X, Y, Z, Z"
   1 "33","0100",g$+"~~  9 ,b"+r$,"0307","<=","0317","X , Y","0330","1 wenn X<=Y","0430","0 wenn X>Y~ 10 ,b","0507",">=","0517","X , Y","0530","1 wenn X>=Y","0630","0 wenn X<Y~ 11 ,b","0707","<>","0717","X , Y","0730","1 wenn X<>Y","0830","0 wenn X=Y"
   1 "3","0100","SAVE Header:~~a) ld ix,{Startadresse des Headers}~b) ld de,17~c) xor a~d) call 1218   SAVE-Routine"
   1 "3","0100","PLOT x,y:~~a) ld c,{x}    X-Koordinate in c~b) ld b,{y}    Y-Koordinate in b~c) call 8927   PLOT-Routine"
   1 "3","0100","LOAD CODE:~~a) ld ix,{Anfangsadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) scf~e) call 1366   LOAD-Routine"
   1 "3","0100","Es gibt aber hier auch die Funktionen,~die mit Strings arbeiten; z.B. wandelt~die STR$-Funktion einen numerischen Aus-~druck in einen Stringausdruck um.~Wenn man das mit dem Calculator tut,~so mu@ man ein Stringparameter auch als~solches vom Calculatorstack herunter-~holen und nicht etwa als Zahl."
   1 "3","0100","BEEP x/y,z:~~a) ld a,{x}    Dividend der Tonlaenge~   call 11560 "+c$+"~b) ld a,{y}    Divisor der Tonlaenge~   call 11560 "+c$
   1 "3","0100","#3  Ausdruck auf Drucker~#2  Ausdruck auf Screen Zeile 0 bis 21~#1  Ausdruck auf Screen Zeile 22 bis 23~#0                  -""-~#255 Workspace~#254 Keyboard"
   1 "23","0100",g$+"~~ 19 ,b"+r$,"0307","<> String X$ , Y$","0330","1 wenn X<>Y$","0430","0 wenn X$=Y$ 20 ,b","0508","> String X$ , Y$","0530","1 wenn X$>Y$","0630","0 wenn X<=Y$"
   1 "2","0100","a) ld de,60000   {Startadresse}~b) ld bc,16      {Laenge}~c) xor a~d) call 10934   Parameter auf Calc.stack~e) ld b,29      Opcode von VAL nach b~f) call 13790   VAL/VAL$-Routine~g) Das Ergebnis liegt auf dem Calculator-~   stack."
   1 "2","0100","a) call 3405~b) Festlegung der gewuenschten Farb-~anweisung mit rst 16~c) call 7341~~MEM-Anweisung:~~a) call 7962~b) ld hl,65535~c) and a~d) sbc hl,bc~e) der in BASIC noch verfuegbare Bereich~   steht jetzt im hl-Register."
   1 "2","0100","VERIFY CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge der Codes}~c) ld a,255~d) and a~call 1366   LOAD-Routine"
   1 "2","0100","Um eine Kopie des obersten Calculator-~stackwertes in eine dieser Speicherzellen zu bringen, benutzt man die Opcodes~192 bis 197.~Um den Inhalt einer dieser Speicher auf~den Calculatorstack zu legen, benutzt~man die Opcodes~224 bis 229."
   1 "2","0100","Sie haben sich bestimmt schon darueber~geaergert, dass Sie In Maschinensprache~auf den BASIC-Komfort verzichten mu@ten.~Das soll sich nun auch fuer Sie aendern.~Ich gebe Ihnen hier eine komplette Auf-~listung der gesamten nuetzlichen ROM-~Routinen im Spectrum-ROM."
   1 "2","0100","PRINT x:  {x liegt im Bereich 0 - 9999}~~a) ld bc,{x}   Zahl in bc-Register bringenb) call 6683   Zeilennummerdruck-Routine~~PRINT x:~~a) ld bc,{x}   Zahl~b) call 11563 "+c$+"~c) call 11747  Zahlenausdruck."
   1 "2","0100","POINT (x,y):~~a) ld c,{x}~b) ld b,{y}~c) call 8910~d) call 7833~e) Ergebnis (1 oder 0) befindet sich im Akku.~~SCREEN$ (y,x):~~a) ld a,{y}    Y-Koordinate~   call 11560 "+c$+"~b) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~c) call 9525   SCREEN$-Routine~d) call 11249  String-Parameter vom Cal-"
   1 "2","0100","Loeschen von Calculatorstack,~Workspace und Editorspace:\"+
   1 "2","0100","Loeschen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3652~~Ausgabe einer Fehlermeldung:~~Dazu wird der Befehl rst 8 benutzt. Der~Code der Fehlermeldung wird einfach als~ein Byte dem rst 8-Befehl angefuegt.~Man befindet sich nach aufruf dieses~Befehls sofort wieder im BASIC.~Z.B. wird die Meldung 0 OK so gemacht:"
   1 "2","0100","Jetzt befinden sich die Stringparameter~(Laenge und Startadresse) in den~Registern bc und de. Um das Ergebnis~der Funktion SCREEN$ zu bekommen,~schreibt man einfach:~~e) ld a,(de)~~und das Ergebnis (der ASCII-Code)~befindet sich im Akku."
   1 "2","0100","FARBEN FESTLEGEN:~~Als Beispiel geben wir uns an, wie die~Befehle~~PAPER 7: INK 9: OVER 1    in Assembler~aussehen:\"+
   1 "2","0100","Des Weiteren gibt es Testfunktionen,~die als Ergebnis entweder eine 1 (wahr)~oder eine 0 (falsch) liefern.~Um Speicherplatz zu sparen, wurden alle 12Vergleichsoperationen in eine Routine~gepackt. Zur Unterscheidung dient in dem~Falle das b-Register, denn man mu@ hier~den Opcode zusaetzlich ins b-Register la-~den."
   1 "2","0100","Der Calculator:~~Wie man mit dem rst 40-Befehl umgeht,~haben Sie ja schon bei dem BEEP-Befehl~gesehen. Der Calculator kann immer nur~den obersten oder die obersten 2 Calcula-~torstack-Elemente behandeln. Das Ergeb-~nis wird dann wieder auf den Stack~zurueckgelegt.~Ich gebe Ihnen jetzt eine komplette~Auflistung der so genannten Calculator-~opcodes, die die saemtlichen Spectrum-~Funktionen darstellen."
   1 "2","0100","DRAW x,y,z:~~a) X- und Y- Koordinaten wie bei~   DRAW x,y auf den Calculatorstack~   bringen~b) ld a,{z}    Radiantenzahl~   call 11560 "+c$+"~c) hl' -Register sichern (siehe DRAW x,y)"
   1 "2","0100","CLS:           call 3435~~COPY:          call 3756~~DRAW x,y:~~a) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~b) ld a,{y}    Y-Koordinate~   call 11560 "+c$
   1 "2","0100","Bei folgenden 3 Pruefroutinen trifft~die Bedingung zu, wenn das Carry-Flag~=0 ist:~~Akku auf Zifferncode pruefen:\"+
   1 "2","0100","BRIGHT x:      [siehe ""Farben setzen""]~~CIRCLE x,y,z:~~a) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~b) ld a,{y}    Y-Koordinate~   call 11560 "+c$+"~c) ld a,{z}    Radius~   call 11560 "+c$
   1 "2","0100","Ausrechnen eines Terms, der als String~im Speicher steht:~~Dazu benutzt man die VAL/VAL$-Routine.~Sie beginnt ab Adresse 13790; die Unter-~scheidung von VAL und VAL$ erfolgt~wieder ueber das b-Register.~VAL  hat den Operationscode 29~VAL$ hat den Operationscode 24."
   1 "1900","Sehen Sie nun auch diese Funktionen:"
   1 "1815","culatorstack holen~[weiter auf der naechsten Seite !]"
   1 "1801","58","1807","Int.-Teil","1907","schneiden "+h$+"X,Y, Z-INT Z"
   1 "1800","Druecken Sie 'v', so wird das Programm~beendet."
   1 "1700","obersten Calculatorstackwert~ins bc-Registerpaar bringen:\"+
   1 "1700","SCROLL:        call 3282~~STOP:          call 7406"
   1 "1700","MEM0 , MEM1 , MEM2 , MEM3 , MEM4 , MEM5"
   1 "17","0100",g$+"~~ 30","0307","LEN"+r$,"0317","X , Y$","0330","X , LEN Y$~ 46","0407","STR$","0417",h$+"X,Y,STR$ Z~ 47","0507","CHR$","0517",h$+"X,Y,CHR$ Z~ 25","0607","USR","0617","X , Y$","0630","X , USR Y$"
   1 "1603","Byt. #31   SIN","1625","SIN (x/80*PI)~   Byt. #56   End.~e) ld a,23~f) call 11560","1925","SIN(x/80*PI) , 23"
   1 "1600","a) rst 8~b) Byt. #255  {Meldecode minus 1}"
   1 "1500",o$+" 17 ,b","1607","<= String X$ , Y$","1630","1 wenn X<=Y$","1730","0 wenn X$>Y$ 18 ,b","1807",">= String X$ , Y$","1830","1 wenn X>=Y$","1930","0 wenn X$<Y$"
   1 "1500","PAUSE x:~~a) res 5,(iy+1) Eingabe freimachen~b) ld bc,{x}    Laenge in msec. nach bc~c) call 7997"
   1 "1500","Es wird also nicht PI, sondern PI/2~(= "+
   1 "1500","EDIT:\"+
   1 "1500","BORDER x:~~a) ld a,{x}    Farbe in Akku bringen~b) call 8859   BORDER-Routine aufrufen."
   1 "1401","35","1407","ACS","1417",h$+"X,Y,(ACS Z)  36","1507","ATN"+r$,"1517",h$+"X,Y,(ATN Z)  37","1607","LN","1617",h$+"X,Y,(LN Z)~ 38","1707","EXP","1717",h$+"X,Y,(EXP Z)  39","1807","INT","1817",h$+"X,Y,(INT Z)  40","1907","SQR","1917",h$+"X,Y,(SQR Z)"
   1 "1400","obersten Calculatorstackwert~in den Akku bringen:\"+
   1 "1400","Diese Opcodes werden einfach als Bytes~hinter dem rst 40-Befehl angefuegt."
   1 "1400","164","1407","10","1417",j$+"X,Y, 10~  8","1507","AND","1517",h$+"X,(Y AND Z)~  7","1607","OR","1617",h$+"X,(Y OR Z)~ 48","1707","NOT","1717",j$+"X , (NOT Y)"
   1 "14","0100","Wir mue@ten zuerst x auf den Calculator-~Stack legen und dann von innen nach~au@en fertigrechnen:~~a) X liegt auf Stack","0525","X~b) ld a,80~c) call 11560","0725","X , 80~d) rst 40~   Byt. #5    /","0925","X / 8~   Byt. #163  PI/2","1025","(X/80) , PI/2"
   1 "1300","a) ld a,{x}    Kanalnummer in Akku~b) call 5633   Kanal oeffnen~~Die Kanaele lauten (siehe naechste Seite):"
   1 "1300","a = c + 10 * a:\"+
   1 "1300","PRINT a$:~~a) ld de,{Startadresse der Zeichenkette}~b) ld bc,{Laenge der Zeichenkette}~c) call 8252   Textdruck."
   1 "1201","54","1207","< 0","1217","X","1230","1 wenn X<0","1330","0 wenn X>=0  55","1407","> 0","1417","X","1430","1 wenn X>0","1530","0 wenn X<=0"
   1 "1200","PRINT AT y,x:~~a) ld b,{24-y}~b) ld c,{33-x}~c) call 3545"
   1 "1200","ATTR (y,x):~~a) ld c,{y}~b) ld b,{x}~c) call 9603~d) call 7833~e) Das Ergebnis steht im c-Register."
   1 "1103","Byt. #49   DUPLICATE","1125","(X/80) ,PI/2,PI/2   Byt. #15   +","1225","(X/80) ,PI/2+PI/2","1325","(X/80) , PI~   Byt. #4    *","1425","(x/80) * PI","1525","(x/80*PI)"
   1 "1100","d) exx~   push hl     hl' - Register sichern~   exx~e) call 9005   CIRCLE-Routine aufrufen~f) exx~   pop hl      hl' - Register holen.~   exx"
   1 "1100","c) exx~   push hl     hl' - Register sichern~   exx~d) call 9335   DRAW I - Routine~e) exx~   pop hl      hl' - Register holen.~   exx"
   1 "1100","bc - Registerinhalt~"+c$+":\"+
   1 "1100","Neben den BASIC-Funktionen stehen dem~Calculator auch noch 6 Speicher zu~Verfuegung, in die er Werte bringen~kann. Diese 6 Speicher werden wie folgt~bezeichnet:"
   1 "1100","Man kann z.B. mit der VAL-Routine eine~mathenatische Aufgabe loesen, aehnlich~PRINT VAL ""12 * SIN (n/PI)"".~Nehmen wir an, unsere Aufgabe steht~ab Adresse 60000 und ist 16 Bytes lang.~So schreiben wir:"
   1 "1100","Es gibt sogar Calculatoropcodes zum~Ueberspringen von Opcodes. Dazu gibt man~hinter dem Befehlsopcode die Anzahl der~zu ueberspringenden Opcodes an; diese kannauch negativ sein, um rueckwaerts zu~springen."
   1 "1100","Ausgabe von Text, dessen letztes Byte mit~gesetztem bit 7 markiert ist:~~a) ld de,{Startadresse des Textes}~b) call 3082~~BASIC-Zeilenkursor hoch:\"+
   1 "1000","Und nun zum Schlu@ moechte ich Ihnen noch zeigen, wie man mit dem rst 40-Befehl~umgeht.~Man kann naemlich mehrere Operationen~hintereinander ausfuehren.~Nehmen wir z.B. an, wir wollten den Term~~   10 + 23 * SIN ( x / 80 * PI )~~mit dem Calculator berechnen."
   1 "1000","Sie erinnern sich: Mit call 11249 kann~man ein Stringparameter, welches auf dem~Calculatorstack liegt, in die Register~bc (die Stringlaenge) und de (die Start-~adresse des Strings) bringen.~Umgekehrt kann man die Inhalte dieser~beiden Registerpaare als Stringparameter~mit call 10929 auf den Calculatorstapel~bringen."
   1 "1000","In der folgenden Tafel sind diese Opera-~tionen mit  , b  gekennzeichnet.~Beachten Sie, da@ es 6 Vergleichs-~operationen fuer numerische Operanden~und 6 fuer Stringoperanden gibt !"
   1 "1","0100","Stringdefinition:~~Man kann einen String schaffen, indem man~seine Startadresse ins de- und seine~Laenge ins bc-Register bringt.~Der Akku mu@ 0 sein; dann werden diese~5 Bytes mit der Routine~~   call 10929~auf den Calculatorstack gebracht.~~Mit der Routine~   call 11249~hingegen kann man ein Stringparameter~vom Calculatorstapel herunterholen."
   1 "1","0100","LIST x:~~a) ld hl,{Startadresse von Zeile x}~b) call 6229~~LOAD Header:~~a) ld ix,{Anfangsadresse des Headers}~b) ld de,17~c) xor a~d) scf~e) call 1366   LOAD-Routine"
   1 "1","0100","Im Folgenden sehen Sie eine Liste, in der~die Calculatoropcodes, also saemtliche~BASIC-Funktionen des Spectrum aufgefuehrt~sind.~Bei jedem Opcode sehen Sie auch die~Calculatorsack-Manipulation durch die~Operationen.~In der nun folgenden Liste ist immer das~rechteste Calculatorstack-Element das~oberste auf dem Stack liegende Element !"
   1 "0900","d) call 9108   DRAW II - Routine~e) hl' -Register holen (Siehe DRAW x,y).~~FLASH:         [siehe ""Farben festlegen""]~~INK:           [siehe ""Farben festlegen""]~~INVERSE:       [siehe ""Farben festlegen""]"
   1 "0900","SOUND x,y:~~(Erzeugt einen kurzen Pfeifton. x ist~die Tontiefe und liegt im Bereich~[1..65535]. y ist die Tonlaenge und~liegt im Bereich [0..65535].)~~a) ld hl,{x}~b) ld de,{y}~c) call 949"
   1 "0900","SAVE CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) call 1218   SAVE-Routine."
   1 "0900","NEW:           call 4535~~OVER:          [siehe ""Farben festlegen""]~~PAPER:         [siehe ""Farben festlegen""]"
   1 "0900"," 12 ,b","0907"," >","0917","X , Y","0930","1 wenn X>Y","1030","0 wenn X<=Y~ 13 ,b","1107"," <","1117","X , Y","1130","1 wenn X<Y","1230","0 wenn X>=Y~ 14 ,b","1307"," =","1317","X , Y","1330","1 wenn X=Y","1430","0 wenn X<>Y"
   1 "0802","6","0807","^","0817",h$+"X ,(Y ^ Z)~ 15","0907","+","0917",h$+"X ,(Y + Z)~ 31","1007","SIN","1017",h$+"X,Y,(SIN Z)  32","1107","COS","1117",h$+"X,Y,(COS Z)  33","1207","TAN","1217",h$+"X,Y,(TAN Z)  34","1307","ASN","1317",h$+"X,Y,(ASN Z)"
   1 "0801","50","0807","MOD/DIV","0817",j$+"Rest , (X/Y) 56","0907","End Calc.~160","1007","0","1017",j$+"X,Y, 0~161","1107","1","1117",j$+"X,Y, 1~162","1207","0.5","1217",j$+"X,Y, 0.5~163","1307","PI/2","1317",j$+"X,Y, 1.5707"
   1 "0800","PRINT CHR$(x):~~a) ld a,{x}    Code des Zeichens in Akku~b) rst 16      Ausdruck"
   1 "0800","Die normale temporaere Farbzuweisung~geschieht ganz einfach mit rst 16.~Soll z.B. PAPER 7 ausgedrueckt werden,~so schreibt man:~~a) ld a,17     (=ASCII-Code von PAPER)~b) rst 16~c) ld a,7      (fuer PAPER 7)~d) rst 16~~Sollen die Farben allerdings bleiben~(nach CLS oder PRINT #), dann mu@ man mit~folgenden call-Befehlen arbeiten:"
   1 "0800","Au@erdem nenne ich Ihnen die Anwendung~mit den Registern, die die Routinen be-~nutzen.~Sie werden sehen, da@ einige Routinen mit~dem so genannten Calculatorstack arbeiten;dieser ist eine Art Stapel, um 5-Byte-~Fliesskommazahlen oder Stringparameter~abzuspeichern, aber dazu Spaeter mehr !~Ich zeige Ihnen jetzt die wichtigsten~Routinen:"
   1 "0800","Akkuinhalt~"+c$+":\"+
   1 "0701","53 ,b  Springt nur, wenn das b-Register","0808","ungleich Null ist. Au@erdem wird","0908","das b-Register dekrementiert.~~Bitte sehen Sie sich dazu noch das~Beispiel auf der naechsten Seite an !"
   1 "0701","28","0707","CODE","0717","X , Y$","0730","X , CODE Y$~ 23","0807","String +  X , Y$ , Z$  X , Y$ + Z$~"+o$+" 27","1007","negieren  "+h$+"X , Y , (-Z)"
   1 "0701","21 ,b","0708","< String X$ , Y$","0730","1 wenn X$<Y$","0830","0 wenn X>=Y$ 22 ,b","0908","= String X$ , Y$","0930","1 wenn X$=Y$","1030","0 wenn X<>Y$"+o$
   1 "0700","c) rst 40      Calculatoraufruf~   Byt. #5     Zahlen dividieren~   Byt. #56    Ende des Calculators~d) ld a,{z}    Tonhoehe~   call 11560 "+c$+"~e) call 1016   BEEP-Routine aufrufen."
   1 "0700","PRINT #x:~~Bevor man irgendetwas zum erstenmal aus-~druckt, mu@ der Bildkanal mit PRINT#~geoeffnet werden ! Das geschieht so:"
   1 "0600","d) Byt. #49     PI/2 duplizieren~e) Byt. #15     PI/2 + PI/2  (=PI)~f) Byt. #56     End of Calculator~g) ld a,2~   call 5633    Kanal #2 oeffnen~h) call 11747   Oberstes Calculatorelement                wird ausgedruckt.~i) ret"
   1 "0500","Ausdruck des obersten~Calculatorstackwertes:\"+
   1 "0411","---,\"+
   1 "0404","Die nuetzlichsten","1220","ROUTINEN","1802","
   1 "0300","Calculatorstack loeschen:\"+
   1 "0201","So, das war die Erklaerung aller\"+
   1 ","1909","
   1 ","1806","
   1 ","1706","
   1 ","1606","
   1 ","1506","
   1 ","1305","
   1 ","1205","
   1 ","1105","
   1 ","0910","
   1 ","0810","
   1  1987 written by Klaus Jahn"
   1  1987 by OMIKRON-Software~all programs & MC-Routines written by~Klaus Jahn, 6432 Heringen 1, W-Germany"
   1